1. Field of the Invention
Aspects of the present invention relate generally to disk drive or other recording media buffer hardware, and more particularly to a system and method of supporting unlimited sub-segments in a buffer manager.
2. Description of Related Art
Hard disk drive and other computer peripheral venders compete to provide products having superior performance measurements. Engineers constantly look for new opportunities to improve algorithms or to utilize hardware efficiently to improve product benchmark scores. Engineering challenges to improve disk drive and other recording media device performance include, but are not limited to: reducing command overhead; improving cache hit rates; improving cache buffer space usage; improving disk I/O operations; and improving host I/O operations.
When a disk drive (e.g., a hard disk drive, floppy disk drive, compact disk (CD) drive, or a digital versatile disk (DVD) drive) receives a command, and before the drive requests data transfer with a host machine, setting up a buffer is generally a necessary step. FIG. 1 is simplified flow diagram illustrating execution of a typical read command. Upon receiving a new read command, if the requested data are all in the cache (or “buffer”), data will be transferred to the host machine immediately (blocks 103 and 104); alternatively, when the cache does not contain all the data associated with the read command, the disk must be read (block 105). The operations depicted at blocks 102, 103, and 104 are generally recognized as “command overhead.” It is generally desirable to reduce the required execution time for these operations.
Typical hardware solutions for buffer management, such as may be implemented in an application specific integrated circuit (ASIC), employ linked lists used by firmware to identify and to manage buffer segments and sub-segments. Depending upon the caching scheme employed, however, the number of buffer sub-segments required or recognized by the firmware may be far greater than the number of buffer sub-segments supported by the hardware, which is generally limited by the number of hardware registers (which must be programmed or set by firmware) or other physical constraints built into the hardware logic. In accordance with one traditional solution, this limitation requires firmware to execute extra code steps or routines in order to recycle the hardware sub-segments while host or disk data transfer is active. The recycling is typically done in the buffer interrupt service routine (ISR) and requires additional firmware execution time, increasing command overhead and ultimately degrading performance.
Although improving the efficiency of buffer set up and enabling hardware to support unlimited buffer sub-segments may have utility in various applications, conventional buffer management strategies are deficient in both of these areas.